import { QuillContent } from '@/types/chapter';

/**
 * 计算Quill内容的字数
 */
export const countWords = (content: QuillContent | string): number => {
  // 处理字符串参数
  if (typeof content === 'string') {
    // 处理中英文混合文本
    // 1. 计算中文字符数量
    const chineseCount = (content.match(/[\u4e00-\u9fa5]/g) || []).length;
    
    // 2. 去除中文字符后计算英文单词数量
    const englishText = content.replace(/[\u4e00-\u9fa5]/g, ' ');
    const englishCount = englishText.trim().split(/\s+/).filter(Boolean).length;
    
    // 返回总字数
    return chineseCount + englishCount;
  }
  
  // 处理QuillContent类型
  if (!content || !content.ops) {
    return 0;
  }
  
  // 提取所有文本内容
  const text = content.ops.reduce((acc, op) => {
    if (typeof op.insert === 'string') {
      return acc + op.insert;
    }
    return acc;
  }, '');
  
  // 按照空白字符分割计数
  return text.trim().split(/\s+/).filter(Boolean).length;
};

/**
 * 计算中文文本的字数
 * 中文一个字符算一个字
 */
export const countChineseWords = (content: QuillContent): number => {
  if (!content || !content.ops) {
    return 0;
  }
  
  // 提取所有文本内容
  const text = content.ops.reduce((acc, op) => {
    if (typeof op.insert === 'string') {
      return acc + op.insert;
    }
    return acc;
  }, '');
  
  // 移除空白字符后的字符数
  return text.replace(/\s+/g, '').length;
};

/**
 * 计算纯文本字数
 */
export const countTextWords = (text: string): number => {
  if (!text || typeof text !== 'string') {
    return 0;
  }
  
  // 处理中英文混合文本
  // 1. 计算中文字符数量
  const chineseCount = (text.match(/[\u4e00-\u9fa5]/g) || []).length;
  
  // 2. 去除中文字符后计算英文单词数量
  const englishText = text.replace(/[\u4e00-\u9fa5]/g, ' ');
  const englishCount = englishText.trim().split(/\s+/).filter(Boolean).length;
  
  // 返回总字数
  return chineseCount + englishCount;
}; 